package Entities;

import java.io.Serializable;
import java.util.Calendar;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@NamedQueries({
    @NamedQuery(name = "todosPedidosExterno", query = "select ex from Externo ex")})
public class Externo extends Pedido implements Serializable {

    private static final long serialVersionUID = 1L;
    //Atributos
    private String direccion;
    @Temporal(value = TemporalType.TIMESTAMP)
    private Calendar fechaHoraEnvio;
    @ManyToOne(fetch = FetchType.EAGER)
    private Cliente cliente;
    @ManyToOne(fetch = FetchType.EAGER)
    private Chofer chofer;

    //Constructores
    public Externo() {
        super();
    }

    public Externo(String direccion, Calendar fechaHoraEnvio, Cliente cliente, Chofer chofer) {
        this.direccion = direccion;
        this.fechaHoraEnvio = fechaHoraEnvio;
        this.cliente = cliente;
        this.chofer = chofer;
    }

    public Externo(String direccion, Calendar fechaHoraEnvio, Cliente cliente, Chofer chofer, List<ItemProducto> listaItemsProductos, Calendar fechaHora, int idEstado) {
        super(listaItemsProductos, fechaHora, idEstado);
        this.direccion = direccion;
        this.fechaHoraEnvio = fechaHoraEnvio;
        this.cliente = cliente;
        this.chofer = chofer;
    }
    
    //Getters and Setters
    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public Calendar getFechaHoraEnvio() {
        return fechaHoraEnvio;
    }

    public void setFechaHoraEnvio(Calendar fechaHoraEnvio) {
        this.fechaHoraEnvio = fechaHoraEnvio;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    public Chofer getChofer() {
        return chofer;
    }

    public void setChofer(Chofer chofer) {
        this.chofer = chofer;
    }
    
    //toString
    @Override
    public String toString() {
        return "Entitys.Externo[ direccion=" + direccion + " ]";
    }
}
